package com.brightgenerous.niconama05.anime.product;

import java.util.Random;

import com.brightgenerous.niconama05.anime.Anime;

/**
 * アニメファクトリクラス
 * 
 * @author brigen
 */
public class AnimeFactory {

	/** インスタンス */
	private static final AnimeFactory s_instance = new AnimeFactory();
	
	/** みなみけ */
	private final Anime m_minamike = new Minamike();

	/** らきすた */
	private final Anime m_rakisuta = new Rakisuta();

	/** けいおん */
	private final Anime m_keion = new Keion();

	/** 苺ましまろ */
	private final Anime m_ichigo = new Ichigomashimaro();

	/** ゆるゆり */
	private final Anime m_yuruyuri = new Yuruyuri();

	/**
	 * コンストラクタ
	 */
	private AnimeFactory() {
	}

	/**
	 * インスタンスを取得する
	 *
	 * @return インスタンス
	 */
	public static AnimeFactory getInstance() {
		return s_instance;
	}

	/**
	 * ランダムにアニメを取得する
	 *
	 * @return アニメ
	 */
	public Anime getRandomAnime() {
		Random random = new Random();
		switch (random.nextInt(5)) {
			case 0:
				return m_minamike;
			case 1:
				return m_rakisuta;
			case 2:
				return m_keion;
			case 3:
				return m_ichigo;
			case 4:
				return m_yuruyuri;
		}

		throw new IllegalStateException();
	}

	/**
	 * みなみけを取得する
	 *
	 * @return みなみけ
	 */
	public Anime getMinamike() {
		return m_minamike;
	}

	/**
	 * らきすたを取得する
	 *
	 * @return らきすた
	 */
	public Anime getRakisuta() {
		return m_rakisuta;
	}

	/**
	 * けいおんを取得する
	 *
	 * @return けいおん
	 */
	public Anime getKeion() {
		return m_keion;
	}
	/**
	 * 苺ましまろを取得する
	 *
	 * @return 苺ましまろ
	 */
	public Anime getIchigomashimaro() {
		return m_ichigo;
	}

	/**
	 * ゆるゆりを取得する
	 * 
	 * @return ゆるゆり
	 */
	public Anime getYuruyuri() {
		return m_yuruyuri;
	}
}
